#pragma once

#include "IXFrame.h"
#include "SkinDataDef.h"

/**
 *  IXImage Interface.
 *
 */
class ExportXSkinLib IXImage : public IXFrame
{
    DEF_INTERFACE(IXImage, _T("{4D14918E-448A-4654-8DD6-7CD4119E7C70}"));

public:
    virtual HRESULT STDMETHODCALLTYPE   put_Image(IN LPCTSTR szXNC) = 0;
    virtual HRESULT STDMETHODCALLTYPE   put_Image(IN XIMAGE xImage) = 0;
    virtual HRESULT STDMETHODCALLTYPE   put_Icon(IN LPCTSTR szXNC, BOOL bBig) = 0;
    virtual HRESULT STDMETHODCALLTYPE   put_Icon(IN XICON xIcon, IN BOOL bDestroy) = 0;

    virtual HRESULT STDMETHODCALLTYPE   get_ImagePath(OUT BSTR* pszXNC) = 0;

    virtual void    STDMETHODCALLTYPE   put_DrawType(IN ImageDrawType type) = 0;

    virtual HRESULT STDMETHODCALLTYPE   put_DrawParams(IN ImageDrawParams* pParam) = 0;
    virtual HRESULT STDMETHODCALLTYPE   get_DrawParams(OUT ImageDrawParams* ppParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE   put_ImageIndex(IN INT nHIndex, IN INT nVIndex) = 0;
    virtual HRESULT STDMETHODCALLTYPE   get_ImageIndex(IN LPINT pnHIndex, IN LPINT pnVIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE   put_ImageSubCount(IN INT nHCount, IN INT nVCount) = 0;
    virtual HRESULT STDMETHODCALLTYPE   get_ImageSubCount(IN LPINT pnHCount, IN LPINT pnVCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE   put_ImageAlphaMode(IN eImageAlphaMode nAlphaMode) = 0;
    virtual HRESULT STDMETHODCALLTYPE   get_ImageAlphaMode(OUT eImageAlphaMode* pnAlphaMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE   put_ImageAlphaValue(IN BYTE byAlphaValue) = 0;
    virtual HRESULT STDMETHODCALLTYPE   get_ImageAlphaValue(OUT LPBYTE pbyAlphaValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE   put_ImageTransparentColor(IN COLORREF clrTrans) = 0;
    virtual HRESULT STDMETHODCALLTYPE   get_ImageTransparentColor(OUT LPCOLORREF pclrTrans) = 0;
};

